class Watcher {
    constructor(vm, key, cb) {
        this.vm = vm
        this.key = key
        this.cb = cb 
        Dep.target = this //这里把当前的watcher对象记录到Dep类的target属性
        this.oldValue = vm[key] //注意这里访问了data中的属性getter方法, 把自己添加到Dep发布者中addSub
        Dep.target = null
    }
    //更新视图操作
    update() {
        //在更新视图的时候，这里需要判断一下当前data属性的值与原来的值是否一样，一样则不更新了 this.vm[this.key]代表最新的值
        if(this.oldValue === this.vm[this.key]) return
        this.cb(this.vm[this.key])
    }
}